package cool.webstudy.admin.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import cool.webstudy.admin.model.dto.notice.CreateNoticeDTO;
import cool.webstudy.admin.model.dto.notice.PaginationQueryNoticeInfoListDTO;
import cool.webstudy.admin.model.dto.notice.UpdateNoticeDTO;
import cool.webstudy.admin.model.po.notice.NoticePO;
import cool.webstudy.admin.model.vo.notice.PaginationQueryNoticeInfoListVO;
import cool.webstudy.admin.model.vo.notice.QueryNoticeDetailInfoVO;

import java.util.List;

/**
 * 公告管理接口定义类
 */
public interface NoticeService {
    /**
     * @param unCode 公告业务主键
     * @return UserPO 公告内容信息实体
     * @description: 判断公告内容否存在，如果存在，则返回信息实体
     */
    NoticePO isExist(String unCode);

    /**
     * @param unCode 业务主键
     * @return QueryNoticeDetailInfoVO 查询公告内容信息接口响应参数模型
     * @description: 查询公告内容信息
     */
    QueryNoticeDetailInfoVO queryNoticeDetailInfo(String unCode);

    /**
     * @param dto 创建公告内容接口请求参数模型
     * @return Boolean 是否成功标识
     * @description: 创建公告内容
     */
    Boolean createNotice(CreateNoticeDTO dto);

    /**
     * @param dto 更新公告内容接口请求参数模型
     * @return Boolean 是否成功标识
     * @description: 更新公告内容
     */
    Boolean updateNotice(UpdateNoticeDTO dto);

    /**
     * @param unCodeList 业务主键列表
     * @return Boolean 是否成功标识
     * @description: 批量删除公告内容
     */
    Boolean batchDeleteNotice(List<String> unCodeList);

    /**
     * @param dto 分页获取信息列表接口请求参数基础模型
     * @return Page<PaginationQueryNoticeInfoListVO> 分页获取公告内容信息列表接口响应模型
     * @description: 分页获取公告内容信息列表
     */
    Page<PaginationQueryNoticeInfoListVO> paginationQueryNoticeInfoList(PaginationQueryNoticeInfoListDTO dto);
}
